<?php 

/**
 * Faz o teste lógico de uma expressão e retorna o valor especificado.
 * Faz o mesmo que: "a = b ? valorSeTrue : ValorSeFalse".
 * @author heekinho
 * @param boolean $test O teste a ser realizado.
 * @param mixed $vtrue Valor a ser retornado caso o teste for true.
 * @param mixed $vfalse Valor a ser retornado caso o teste for false.
 * @return valor.
 */
function iif($test, $vtrue, $vfalse = false){
	if($test) return $vtrue;
	return $vfalse;
}


/**
 * Itera através dos elementos, obtendo o _POST que tem tal elemento como chave
 * e verifica se os elementos estão setados. Retorna os que não estiverem.
 * @author heekinho
 * @param array $elems
 * @return array Elementos que não estão setados
 */
function notset_post_elems($elems){
	$notmatches = array();
	foreach ($elems as $elem) if(!isset($_POST[$elem])) array_push($notmatches, $elem);
	
	return $notmatches;
}


/**
 * Itera através dos elementos, obtendo o _POST que tem tal elemento como chave
 * e retorna os elementos que estiverem vazios
 * @author heekinho
 * @param array $elems
 * @return array Elementos que não estão setados
 */
function empty_post_elems($elems){
	$empty_fields = array();
	foreach ($elems as $elem) if(empty($_POST[$elem])) array_push($empty_fields, $elem);
	
	return $empty_fields;
}

/**
 * Recebe o cpf informado pelo usuário  no momento do cadastro
 * e retorna um boolean informando se o cpf é válido ou não
 * @author Igo
 * @author  Ph
 * @param array $cpfInformado 
 * @return boolean $situacao
 */
function verificarCPF ($cpfInformado)
{
    //Verifica se o cpf informado é número
    if(!is_numeric($cpfInformado))
    {
        $situacao = false;
    }
    else
    {
        // Verifica se todos os digitos do cpf são iguais.
        if( ($cpfInformado =='11111111111' ) || ($cpfInformado =='22222222222' ) || ($cpfInformado =='33333333333' ) ||
            ($cpfInformado =='44444444444' ) || ($cpfInformado =='55555555555' ) || ($cpfInformado =='66666666666' ) ||
            ($cpfInformado =='77777777777' ) || ($cpfInformado =='88888888888' ) || ($cpfInformado =='99999999999' )||
            ($cpfInformado =='00000000000' ) )
            {
                $situacao = false;
            }

            else
            {
                // Atribui o digito verificador a uma variável
                $digitoVerificador = substr($cpfInformado, 9, 2);

                //Atribui cada digito do cpf a uma posição
                for($i=0; $i<= 8; $i++)
                {
                    $digitoCPF[$i] = substr($cpfInformado, $i, 1);
                }
                // Calcula o decimo digito do cpf, o valor do primeiro digito verificador
                $digitoPosicao = 10;
                $soma = 0;
                for($i=0; $i<=8; $i++)
                {
                     $soma = $soma + $digitoCPF[$i] * $digitoPosicao;
                     $digitoPosicao = $digitoPosicao - 1;
                }
                $digitoCPF[9] = $soma % 11;

                if($digitoCPF[9] < 2)
                  {
                    $digitoCPF[9] = 0;
                  }

                else
                {
                 $digitoCPF[9] = 11 - $digitoCPF[9];
                }

                // Calcula o decimo primeiro digito do cpf, o valor do segundo digito verificador

                $digitoPosicao = 11;
                $soma = 0;
                for ($i=0; $i<=9; $i++)
                {
                     $soma = $soma + $digitoCPF[$i] * $digitoPosicao;
                     $digitoPosicao = $digitoPosicao - 1;
                }
                $digitoCPF[10] = $soma % 11;
                if ($digitoCPF[10] < 2)
                {
                     $digitoCPF[10] = 0;
                }
                else
                {
                 $digitoCPF[10] = 11 - $digitoCPF[10];
                }

             // Efetua a verificação se os digitos calculados são iguais aos digitos informados pelo usuário
                $digitoCalculado = $digitoCPF[9] * 10 + $digitoCPF[10];
                if ($digitoCalculado != $digitoVerificador)
                {
                     $situacao = false;
                }
                else
                {
                    $situacao = true;
                }
    }
  }

  return $situacao;
}


/**
 * Recebe os elementos notas e carga horária da disciplina da referida nota de cada aluno
 * e retorna o valor do cálculo do escore do aluno.
 * @author Igo e Ph
 * @param array $notasInformadas e $cH
 * @return integer $escore
 */
function calculaEscore ($notasInformadas, $cH)
{
    $notas = array();
    $notas = $notasInformadas;
    $cargaHoraria = array();
    $cargaHoraria = $cH;

    $quantidadeNotas = count($notas);
    $quantidadeCH = count($cargaHoraria);

//   if($quantidadeNotas != quantidadeCH)
  //  {
    //    print "Quantidade de notas diferente da quantidade de CH. Algo errado!";
    //}
    $numerador = $notas[0] * $cargaHoraria[0];
    $denominador =  $cargaHoraria[0];
    for($n=1;$i<=$quantidadeNotas;$i++)
    {
        $numerador = $numerador + ( $notas[$i] * $cargaHoraria[$i]);
        $denominador = $denominador + $cargaHoraria[$i];
    }

    $escore = $numerador/$denominador;

    return $escore;

}



?>